package request

// 关注用户请求参数
type UserFollowReq struct {
	FormUserId int64 `form:"form_user_id" json:"form_user_id"` // 发送者用户ID
	ToTargetId int64 `form:"to_target_id" json:"to_target_id"` // 目标用户ID
}

// 取消关注用户请求参数
type UserNotFollowReq struct {
	FormUserId int64 `form:"form_user_id" json:"form_user_id"` // 发送者用户ID
	ToTargetId int64 `form:"to_target_id" json:"to_target_id"` // 目标用户ID
}

// 发送好友申请请求参数
type ApplicationReq struct {
	FormUserId int64  `form:"form_user_id" json:"form_user_id"` // 发送者用户ID
	ToTargetId int64  `form:"to_target_id" json:"to_target_id"` // 目标用户ID
	Greeting   string `form:"greeting" json:"greeting"`         // 好友申请内容
}

// 同意好友申请请求参数
type AcceptApplicationReq struct {
	UserId        int64 `form:"user_id" json:"user_id"`               // 接受好友申请id
	ApplicationId int64 `form:"application_id" json:"application_id"` // 好友申请id
}

// 拒绝好友申请请求参数
type RejectApplicationReq struct {
	UserId        int64 `form:"user_id" json:"user_id"`               // 接受好友申请id
	ApplicationId int64 `form:"application_id" json:"application_id"` // 好友申请id
}

// 聊天室推荐
type ChatRoomRecommendReq struct {
	UserId   uint   `gorm:"user_id" json:"user_id"`   // 用户id
	Category string `gorm:"category" json:"category"` // 分类/兴趣
}

// 获取用户兴趣标签列表
type GetInterestTags struct {
}

// 保存用户兴趣选择
type SaveUserInterests struct {
	UserId int64   `json:"user_id" form:"user_id"`
	TagIds []int64 `json:"tag_ids" form:"tag_ids"`
}
type GetRecommendations struct {
	UserId   int64 `json:"user_id" form:"user_id"`
	Page     int32 `json:"page" form:"page"`
	PageSize int32 `json:"page_size" form:"page_size"`
}
type GetSmartRecommendations struct {
	UserId int64 `json:"user_id" form:"user_id"`
	Limit  int32 `json:"limit" form:"limit"`
}
type SwipeUser struct {
	UserId       int64 `json:"user_id" form:"user_id"`
	TargetUserId int64 `json:"target_user_id" form:"target_user_id"`
	Action       int32 `json:"action" form:"action"`
}
type GetMatches struct {
	UserId   int64 `json:"user_id" form:"user_id"`
	Page     int32 `json:"page" form:"page"`
	PageSize int32 `json:"page_size" form:"page_size"`
}
type GetMatchDetail struct {
	UserId  int64 `json:"user_id" form:"user_id"`
	MatchId int64 `json:"match_id" form:"match_id"`
}
type SendMessage struct {
	UserId  int64  `json:"user_id" form:"user_id"`
	MatchId int64  `json:"match_id" form:"match_id"`
	Content string `json:"content" form:"content"`
	MsgType int32  `json:"msg_type" form:"msg_type"`
}
type GetChatMessages struct {
	UserId   int64 `json:"user_id" form:"user_id"`
	MatchId  int64 `json:"match_id" form:"match_id"`
	Page     int32 `json:"page" form:"page"`
	PageSize int32 `json:"page_size" form:"page_size"`
}
type MarkMessagesAsRead struct {
	UserId  int64 `json:"user_id" form:"user_id"`
	MatchId int64 `json:"match_id" form:"match_id"`
}
type GetUnreadMessageCount struct {
	UserId int64 `json:"user_id" form:"user_id"`
}
type GetNotifications struct {
	UserId   int64 `json:"user_id" form:"user_id"`
	Page     int32 `json:"page" form:"page"`
	PageSize int32 `json:"page_size" form:"page_size"`
}
type MarkNotificationAsRead struct {
	UserId         int64 `json:"user_id" form:"user_id"`
	NotificationId int64 `json:"notification_id" form:"notification_id"`
}

// 灵魂匹配/问答相关请求结构体

// 获取灵魂问答题目
type GetSoulQuestions struct {
	UserId   int64  `json:"user_id" form:"user_id"`
	Category string `json:"category" form:"category"`
	Limit    int32  `json:"limit" form:"limit"`
}

// 提交灵魂问答答案
type SubmitSoulAnswer struct {
	UserId      int64    `json:"user_id" form:"user_id"`
	QuestionId  int64    `json:"question_id" form:"question_id"`
	Answers     []string `json:"answers" form:"answers"`
	AnswerScore float64  `json:"answer_score" form:"answer_score"`
}

// 获取灵魂匹配结果
type GetSoulMatches struct {
	UserId   int64 `json:"user_id" form:"user_id"`
	Page     int32 `json:"page" form:"page"`
	PageSize int32 `json:"page_size" form:"page_size"`
}

// 获取灵魂匹配详情
type GetSoulMatchDetail struct {
	UserId       int64 `json:"user_id" form:"user_id"`
	TargetUserId int64 `json:"target_user_id" form:"target_user_id"`
}

// 获取用户灵魂档案
type GetUserSoulProfile struct {
	UserId int64 `json:"user_id" form:"user_id"`
}

// 计算灵魂契合度
type CalculateSoulCompatibility struct {
	UserId1 int64 `json:"user_id_1" form:"user_id_1"`
	UserId2 int64 `json:"user_id_2" form:"user_id_2"`
}

// 好友系统
type AddFriend struct {
	UserId       int64  `json:"user_id" form:"user_id"`
	TargetUserId int64  `json:"target_user_id" form:"target_user_id"`
	GroupId      int64  `json:"group_id" form:"group_id"`
	Remark       string `json:"remark" form:"remark"`
}

type RemoveFriend struct {
	UserId       int64 `json:"user_id" form:"user_id"`
	TargetUserId int64 `json:"target_user_id" form:"target_user_id"`
}

type GetFriends struct {
	UserId int64 `json:"user_id" form:"user_id"`
}

type CreateFriendGroup struct {
	UserId    int64  `json:"user_id" form:"user_id"`
	GroupName string `json:"group_name" form:"group_name"`
}

type RenameFriendGroup struct {
	UserId    int64  `json:"user_id" form:"user_id"`
	GroupId   int64  `json:"group_id" form:"group_id"`
	GroupName string `json:"group_name" form:"group_name"`
}

type DeleteFriendGroup struct {
	UserId  int64 `json:"user_id" form:"user_id"`
	GroupId int64 `json:"group_id" form:"group_id"`
}

type MoveFriendToGroup struct {
	UserId       int64 `json:"user_id" form:"user_id"`
	TargetUserId int64 `json:"target_user_id" form:"target_user_id"`
	ToGroupId    int64 `json:"to_group_id" form:"to_group_id"`
}

// 好友动态
type PostFriendActivity struct {
	UserId  int64    `json:"user_id" form:"user_id"`
	Content string   `json:"content" form:"content"`
	Images  []string `json:"images" form:"images"`
}

type GetFriendActivities struct {
	UserId   int64 `json:"user_id" form:"user_id"`
	Page     int32 `json:"page" form:"page"`
	PageSize int32 `json:"page_size" form:"page_size"`
}
